Various forms of computer memory exist. At the time of filing this specification, the expression ‘memory’ was typically used in the field to refer to the memory made rapidly accessible to the processor. Memory can include a cache, often in the form of static random-access memory (SRAM). Static random-access memory typically refers to memory which is incorporated into the chip of the associated processor. Memory can also include off-chip memory, also known as main memory. Off-chip memory is often provided in the form of dynamic random access-memory (DRAM) which is made part of one or more silicon-based chip(s). The construction of memory cells is different from one form of memory to another. Other forms of memory can be used on-chip, such as embedded DRAM (EDRAM), or can be used off-chip, such as hybrid memory cube (HMC) or high bandwidth memory (HBM) for instance.
Although the exact construction of memory varies from one type to another, it is typical for memory to be provided in the form of organized memory cells. Each memory cell can hold a bit of data. Each type of cell and memory construction has associated features, which can be perceived as either advantageous or disadvantageous. For example, on-chip memory is typically faster but more expensive and/or power-consuming than off-chip memory. Most computers use more than one type of memory in the aim of harnessing the advantages of the various memory types for corresponding functions. Together the various memory types make up the computer's memory system. Different memory types are typically organized in a structure referred to as memory hierarchy. Smaller, faster, more expensive memory is situated closer to the processor and less expensive memory is situated farther away from the processor. The memory hierarchy often includes more than one speed grade of memory on-chip, off-chip, or both on-chip and off-chip. Memory control logic, which can be referred to as a memory controller, is provided in the form of hardware, software, or a combination of both, and performs various algorithms aimed at using the various memory levels in an organized manner.
The technology which was available was satisfactory to a certain degree, but there remains room for improvement. For example, the known use of cache depended heavily on the applicability of the principle of locality (the principle that memory accesses have a high probability of clustering around adjacent memory addresses). In applications where this principle does not apply sufficiently, for example, in the case of some ultra-high performance applications in networking and data center computing, the efficiency of the cache system could be limited.